#include "AuthManager.h"

// 用于用户登录验证，接收用户名和密码作为参数，返回布尔值表示登录是否成功。
bool AuthManager::login(const std::string &username, const std::string &password)
{
    auto it = users.find(username);
    if (it != users.end() && it->second == password)
    {
        isLoggedInStatus = true;
        // currentUserRole = "user"; // 默认普通用户
        currentUserRole = (username == "admin") ? "admin" : "user";
        return true;
    }
    return false;
}
// 注册新用户，接收用户名、密码和身份作为参数，返回布尔值表示注册是否成功。
bool AuthManager::registerUser(const std::string &username, const std::string &password, const std::string &role)
{
    if (users.find(username) == users.end())
    {
        users[username] = password;
        return true;
    }
    return false;
}

// 注销当前用户，清空登录状态。
void AuthManager::logout()
{
    isLoggedInStatus = false;
    currentUserRole = "";
}
// 判断当前用户是否登录。
bool AuthManager::isLoggedIn() const
{
    return isLoggedInStatus;
}

// 获取当前登录用户的身份。
std::string AuthManager::getCurrentUserRole() const
{
    return currentUserRole;
}

// 判断当前用户是否具有指定权限。
bool AuthManager::hasPermission(const std::string &requiredRole) const
{
    return currentUserRole == requiredRole;
}

std::map<std::string, std::string> &AuthManager::getUsers()
{
    return users;
}
